// [0,0,1,1,1,2,2,2,3,3,4]
// res: 5 nums= [0,1,2,3,4]

// 1. 定义一个慢指针片指向第一个值，慢指针p2指向第二个元素
// 2. 当p2小于数组长度的时候，进行遍历
// 3. 如果p1指向元素不等于p2指向的元素，p1右移，同时将p1指向的元素替换为p2指向的元素
// 4. 如果p1 === p2，则将p2右移
// 5. 直到便利结束 [0,p1] 区间就是数组所有未重复的元素，返回p1+1，


function removeDuplicates(nums) {
    let p1 = 0, p2 = 1;
    while (p2 < nums.length) {
        if (nums[p1] !== nums[p2]) {
            p1++;
            nums[p1] = nums[p2]
        }
        p2++
    }
    return p1 + 1
}